package org.dromara.yuanshidian.domain.bo;

import org.dromara.yuanshidian.domain.Ab04Refund;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.math.BigDecimal;

/**
 * 退费计息明细业务对象 ab04_refund
 *
 * @author tzhong
 * @date 2025-06-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = Ab04Refund.class, reverseConvertGenerate = false)
public class Ab04RefundBo extends BaseEntity {

    /**
     * ID
     */
    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 缴费时间
     */
    @NotBlank(message = "缴费时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal paymentTime;

    /**
     * 当年记账利率
     */
    @NotNull(message = "当年记账利率不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal accountingRate;

    /**
     * 月缴费
     */
    @NotNull(message = "月缴费不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal monthlyPayment;

    /**
     * 年缴费
     */
    @NotNull(message = "年缴费不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal annualPayment;

    /**
     * 上年末个人账户累积额
     */
    @NotNull(message = "上年末个人账户累积额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal lastYearAmount;

    /**
     * 上年末个人账户累积额利息收入
     */
    @NotNull(message = "上年末个人账户累积额利息收入不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal lastYearAccumulateAmount;

    /**
     * 本年缴纳的个人部分利息收入
     */
    @NotNull(message = "本年缴纳的个人部分利息收入不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal currentYearInterestIncome;

    /**
     * 利息收入小计
     */
    @NotNull(message = "利息收入小计不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal interestIncome;

    /**
     * 用户身份证号码
     */
    @NotBlank(message = "用户身份证号码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String userCard;

    /**
     * 人员状态：1在职，2离退
     */
    @NotBlank(message = "人员状态", groups = { AddGroup.class, EditGroup.class })
    private Integer personnelStatus;



}
